home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Developer CD Series 1992 June: ROMin Holiday
/
ADC Developer CD (1992-06) (''ROMin Holiday'')_iso
/
Developer Connection - 06-1992.iso
/
Periodicals
/
develop
/
develop 5 code
/
Scanning from ProDOS
/
Dev.Sampledbl.aii.lst
< prev
next >
Encoding:
Amiga (detected)
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
File List
|
1990-12-04
|
60.6 KB
|
1,159 lines
|
[
TEXT/MPS
]
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 1
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
;*******************************************************
;
; Develop Code Samples.
;
; Written by Matt Gulick. Started October 16,1990
;
;*******************************************************
;*******************************************************
;
; This file contains the code samples that are used in
; the Scanning From ProDOS article in DEVELOP. These
; code segments may be used freely by anyone. All
; code in this file assumes that we are running in an
; 8 bit Apple IIe.
;
;*******************************************************
;*******************************************************
;
; Revision History:
;
;*******************************************************
; Oct 16, 1990 File started.
;
STRING PASCAL
BLANKS OFF
PAGESIZE 70
PRINT NOGEN
PRINT NOMDIR
MACHINE M65C02
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 2
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
;*******************************************************
;
; CODE SAMPLE #1
;
; This first code segment walks the slots starting at
; slot 7, looking first for a card of any kind. Once
; found, we check the ID bytes for a Smartport card.
; Once found we check the ID Type byte to see if it is
; a SCSI Card. If it passes all these tests, we then
; issue a Device $00 Status $00 call to further ensure
; that this is the Apple High-Speed SCSI Card.
;
;*******************************************************
;
; The following are Equates
; that will bee used in all
; the Sample Code Segments
; that follow.
;
0000 004B rqst_cnt equ 75
0000 00C7 slot_7 equ $C7
0000 00C1 slot_1 equ $C1
0000 0042 My_ZPage equ $42
0000 C000 KBD equ $C000 ;Keyboard
0000 C000 CLR80COL equ $C000 ;Disable 80_column store
0000 C001 SET80COL equ $C001 ;Enable 80_column store
0000 C004 WRMAINRAM equ $C004 ;Write to Main 48k
0000 C005 WRCARDRAM equ $C005 ;Write to Alternate 48k
0000 C00C CLR80VID equ $C00C ;Disable 80-column hardware
0000 C00D SET80VID equ $C00D ;Enable 80-column hardware
0000 C010 KBD_STRB equ $C010 ;Keyboard Strobe
0000 C018 RD80COL equ $C018 ;Read 80 Col. Mode
0000 C01A RDTEXT equ $C01A ;Read Text Mode
0000 C01B RDMIX equ $C01B ;Read Mix Mode
0000 C01C RDPAGE2 equ $C01C ;Read Page 2 setting
0000 C01D RDHIRES equ $C01D ;Read HiRes setting
0000 C01F RD80VID equ $C01F ;Read 80 Col. Mode
0000 C050 TXTCLR equ $C050 ;Clear Text Mode
0000 C051 TXTSET equ $C051 ;Set Text Mode
0000 C052 MIXCLR equ $C052 ;Clear Mixed Mode
0000 C053 MIXSET equ $C053 ;Set Mixed Mode
0000 C054 TXTPAGE1 equ $C054 ;Set Text Page 1
0000 C055 TXTPAGE2 equ $C055 ;Set Text page 2
0000 C056 LORES equ $C056 ;Set LoRes Graphics
0000 C057 HIRES equ $C057 ;Set HiRes Graphics
0000 C05E CLRAN3 equ $C05E ;Clear annunciator 3
0000 C05F SETAN3 equ $C05F ;Set annunciator 3
0000 009B ESC equ $9B ;High bit set ASCII ESC Key
0000 0001 Blk_sig1 equ $01
0000 0003 Blk_sig2 equ $03
0000 0005 Blk_sig3 equ $05
0000 0007 SPort_sig equ $07
0000 00FB SPort_ID equ $FB
0000 0080 Ext_SPort equ %10000000 ;Bit 7
0000 0002 SCSI equ %00000010 ;Bit 2
0000 0000 No_Err equ $00
0000 0027 IO_Err equ $27
0000 0028 No_dev equ $28
;*******************************************************
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 3
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
EXPORT P8_Scanner
00000 0000 P8_Scanner PROC
00000 0000 ;
00000 0000 ; Main Code Segment.
00000 0000 ;
00000 0000
00000 0000 20 FFFF 00018 6 jsr find_card
00003 0003 20 FFFF 000FA 6 jsr find_scanr
00006 0006 20 FFFF 0018E 6 jsr htone_filter
00009 0009 20 FFFF 001F5 6 jsr def_window
0000C 000C 20 FFFF 0027B 6 jsr start_scan
0000F 000F 20 FFFF 002CE 6 jsr get_data
00012 0012 20 FFFF 00649 6 jsr display
00015 0015 90 E9 00000 2 bcc P8_Scanner
00017 0017 60 6 rts
00018 0018
00018 0018 ;*******************************************************
00018 0018 ;
00018 0018 ; CODE SAMPLE #1
00018 0018 ;
00018 0018 ; This first code segment walks the slots starting at
00018 0018 ; slot 7, looking first for a card of any kind. Once
00018 0018 ; found, we check the ID bytes for a Smartport card.
00018 0018 ; Once found we check the ID Type byte to see if it is
00018 0018 ; a SCSI Card. If it passes all these tests, we then
00018 0018 ; issue a Device $00 Status $00 call to further ensure
00018 0018 ; that this is the Apple High-Speed SCSI Card.
00018 0018 ;
00018 0018 ;*******************************************************
00018 0018
00018 0018 find_card
00018 0018 ;
00018 0018 ; Save the current Zero
00018 0018 ; Page values before
00018 0018 ; using them.
00018 0018 ;
00018 0018 A5 42 3 lda <My_ZPage
0001A 001A 48 3 pha
0001B 001B A5 43 3 lda <My_ZPage+1
0001D 001D 48 3 pha
0001E 001E ;
0001E 001E ; Start at Slot 7.
0001E 001E ;
0001E 001E A9 C7 2 lda #slot_7
00020 0020 85 43 3 sta <My_ZPage+1 ;Zero Page
00022 0022 8D FFFF 000AF 4 sta slot+1 ;For Safe keeping
00025 0025 64 42 3 stz <My_ZPage
00027 0027 9C FFFF 000AE 4 stz slot
0002A 002A ;
0002A 002A ; Is it a Smartport Card?
0002A 002A ;
0002A 002A A0 01 2 @chk_smart ldy #Blk_sig1
0002C 002C B1 42 5 lda (My_ZPage),y;Block_device Signature Byte
0002E 002E C9 20 2 cmp #$20 ;#1 = $20
00030 0030 D0 23 00055 2 bne @next_slot
00032 0032
00032 0032 A0 03 2 ldy #Blk_sig2
00034 0034 B1 42 5 lda (My_ZPage),y;Block_device Signature Byte
00036 0036 D0 1D 00055 2 bne @next_slot ;#2 = $00
00038 0038
00038 0038 A0 05 2 ldy #Blk_sig3
0003A 003A B1 42 5 lda (My_ZPage),y;Block_device Signature Byte
0003C 003C C9 03 2 cmp #$03 ;#3 = $03
0003E 003E D0 15 00055 2 bne @next_slot
00040 0040
00040 0040 A0 07 2 ldy #SPort_sig
00042 0042 B1 42 5 lda (My_ZPage),y;SmartPort Signature Byte
00044 0044 D0 0F 00055 2 bne @next_slot ;#1 = $00
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 4
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
00046 0046 ;
00046 0046 ; We have a Smartport
00046 0046 ; Device. Is it SCSI with
00046 0046 ; Extended SmartPort?
00046 0046 ;
00046 0046 A0 FB 2 ldy #SPort_ID
00048 0048 B1 42 5 lda (My_ZPage),y
0004A 004A 29 82 2 and #Ext_SPort+\
SCSI
0004C 004C C9 82 2 cmp #Ext_SPort+\
SCSI
0004E 004E D0 05 00055 2 bne @next_slot
00050 0050 ;
00050 0050 ; Is it an Apple High-
00050 0050 ; Speed SCSI Card?
00050 0050 ;
00050 0050 20 FFFF 0006E 6 jsr is_it_appl
00053 0053 90 0E 00063 2 bcc @exit
00055 0055 ;
00055 0055 ; Check the Next Slot.
00055 0055 ;
00055 0055 A5 43 3 @next_slot lda <My_ZPage+1
00057 0057 3A 2 dec a
00058 0058 85 43 3 sta <My_ZPage+1
0005A 005A 8D FFFF 000AF 4 sta slot+1
0005D 005D C9 C1 2 cmp #slot_1
0005F 005F B0 C9 0002A 2 bge @chk_smart
00061 0061 A9 28 2 lda #No_dev ;No Device Error
00063 0063 ;
00063 0063 ; Clean Exit
00063 0063 ;
00063 0063 AA 2 @exit tax
00064 0064 68 4 pla
00065 0065 85 43 3 sta <My_ZPage+1
00067 0067 68 4 pla
00068 0068 85 42 3 sta <My_ZPage
0006A 006A 8A 2 txa
0006B 006B
0006B 006B C9 01 2 cmp #$01 ;Set Carry if Non-Zero
0006D 006D 60 6 rts
0006E 006E ;
0006E 006E ; This routine determines
0006E 006E ; if the card is the new
0006E 006E ; High-Speed SCSI Card.
0006E 006E ;
0006E 006E A0 FF 2 is_it_appl ldy #$ff
00070 0070 B1 42 5 lda (My_ZPage),y
00072 0072 18 2 clc
00073 0073 69 03 2 adc #$03 ;Set Smartport Entry Address
00075 0075 8D FFFF 000B3 4 sta card_ntry
00078 0078
00078 0078 A5 43 3 lda <My_ZPage+1
0007A 007A 8D FFFF 000B4 4 sta card_ntry+1
0007D 007D
0007D 007D 20 FFFF 000B0 6 jsr call_card
00080 0080 00 dc.b $00 ;Status Call Command Number
00081 0081 00B5 dc.w stat_list1
00083 0083 ;
00083 0083 ; Check the Results
00083 0083 ;
00083 0083 AD FFFF 000BC 4 lda stat_data+2 ;Low Byte of Vendor ID
00086 0086 C9 01 2 cmp #$01 ;Must be $01
00088 0088 D0 12 0009C 2 bne @non_apple
0008A 008A
0008A 008A AD FFFF 000BD 4 lda stat_data+3 ;High Byte of Vendor ID
0008D 008D D0 0D 0009C 2 bne @non_apple ;Must be $00
0008F 008F
0008F 008F AD FFFF 000BE 4 lda stat_data+4 ;Low Byte of Version
00092 0092 D0 08 0009C 2 bne @non_apple ;Should be Null
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 5
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
00094 0094
00094 0094 AD FFFF 000BF 4 lda stat_data+5 ;High Byte of Version
00097 0097 D0 03 0009C 2 bne @non_apple ;Should be Null
00099 0099
00099 0099 18 2 clc ;Acc. 0 by previous LDA
0009A 009A 80 03 0009F 3 bra @done
0009C 009C
0009C 009C A9 28 2 @non_apple lda #No_dev ;Device not found.
0009E 009E 38 2 sec
0009F 009F ;
0009F 009F ; Restore ZPage
0009F 009F ;
0009F 009F 48 3 @done pha
000A0 00A0 08 3 php
000A1 00A1 AD FFFF 000AE 4 lda slot
000A4 00A4 85 42 3 sta <My_ZPage
000A6 00A6 AD FFFF 000AF 4 lda slot+1
000A9 00A9 85 43 3 sta <My_ZPage+1
000AB 00AB 28 4 plp
000AC 00AC 68 4 pla
000AD 00AD 60 6 rts
000AE 00AE
000AE 00AE 0000 slot dc.w $0000
000B0 00B0
000B0 00B0 ;*******************************************************
000B0 00B0
000B0 00B0 6C FFFF 5 call_card jmp (card_ntry)
000B3 00B3
000B3 00B3 0000 card_ntry dc.w $0000
000B5 00B5
000B5 00B5 ;*******************************************************
000B5 00B5
000B5 00B5 03 stat_list1 dc.b $03 ;PCount = 3
000B6 00B6 00 dc.b $00 ;Device = Card
000B7 00B7 00BA dc.w stat_data ;Data returned here
000B9 00B9 00 dc.b $00 ;Get Host Status Call
000BA 00BA
000BA 00BA ;*******************************************************
000BA 00BA
000BA 00BA 000000000000 stat_data dcb.b 64,0 ;Our Buffer.
000FA 00FA
000FA 00FA ;*******************************************************
000FA 00FA ;
000FA 00FA ; CODE SAMPLE #2
000FA 00FA ;
000FA 00FA ; This code segment walks the unit numbers from the
000FA 00FA ; SCSI Card starting at unit 2 and going to unit 0 to
000FA 00FA ; get the actual unit number count. Once this is
000FA 00FA ; done, we start at unit 1 and walk forward until we
000FA 00FA ; find the scanner.
000FA 00FA ;
000FA 00FA ;*******************************************************
000FA 00FA
000FA 00FA find_scanr
000FA 00FA ;
000FA 00FA ; First we issue a
000FA 00FA ; Status call to device
000FA 00FA ; number 2. This will
000FA 00FA ; force the card to
000FA 00FA ; build its tables if it
000FA 00FA ; has not yet done so.
000FA 00FA ;
000FA 00FA A9 02 2 lda #$02
000FC 00FC 8D FFFF 00171 4 sta dev_num2
000FF 00FF 9C FFFF 00174 4 stz stat_code2
00102 0102
00102 0102 20 00B0 000B0 6 jsr call_card
00105 0105 00 dc.b $00 ;Status Call Command Number
00106 0106 0170 dc.w stat_list2
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 6
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
00108 0108 B0 4F 00159 2 bcs @error
0010A 010A ;
0010A 010A ; Now call Unit 0 to
0010A 010A ; find out the total
0010A 010A ; device count.
0010A 010A ;
0010A 010A 9C FFFF 00171 4 stz dev_num2
0010D 010D 20 00B0 000B0 6 jsr call_card
00110 0110 00 dc.b $00 ;Status Call Command Number
00111 0111 0170 dc.w stat_list2
00113 0113 B0 44 00159 2 bcs @error
00115 0115
00115 0115 AD FFFF 00175 4 lda stat_data2 ;Get the Total Device
00118 0118 8D FFFF 0016E 4 sta dev_count ;Count
0011B 011B
0011B 011B A9 03 2 lda #$03 ;Set up for DIB Status
0011D 011D 8D FFFF 00174 4 sta stat_code2 ;Calls
00120 0120
00120 0120 AD FFFF 00171 4 @loop lda dev_num2 ;First time we increment
00123 0123 CD FFFF 0016E 4 cmp dev_count ;a zero giving a device
00126 0126 B0 31 00159 2 bge @error ;number of 1.
00128 0128
00128 0128 EE FFFF 00171 6 inc dev_num2
0012B 012B 20 00B0 000B0 6 jsr call_card
0012E 012E 00 dc.b $00 ;Status Call Command Number
0012F 012F 0170 dc.w stat_list2
00131 0131 B0 26 00159 2 bcs @error
00133 0133
00133 0133 AD FFFF 0018A 4 lda d_type
00136 0136 C9 08 2 cmp #$08 ;Is it Type = Scanner?
00138 0138 D0 E6 00120 2 bne @loop ;No.
0013A 013A
0013A 013A AD FFFF 0018B 4 lda d_stype
0013D 013D C9 A0 2 cmp #$A0 ;Subtype = $A0?
0013F 013F D0 DF 00120 2 bne @loop ;No
00141 0141 ;
00141 0141 ; Scan string is a Pascal
00141 0141 ; String. A length byte
00141 0141 ; followed by ASCII. We
00141 0141 ; want to make sure they
00141 0141 ; are both the same length
00141 0141 ; as well as the same text.
00141 0141 ;
00141 0141 AE FFFF 00179 4 ldx id_str_len
00144 0144 BD FFFF 4 @str_loop lda id_str_len,x
00147 0147 DD FFFF 4 cmp scan_str,x
0014A 014A D0 D4 00120 2 bne @loop
0014C 014C CA 2 dex
0014D 014D D0 F5 00144 2 bne @str_loop
0014F 014F
0014F 014F AD FFFF 00171 4 lda dev_num2 ;We have our Scanner
00152 0152 8D FFFF 0016F 4 sta scan_dnum
00155 0155 A9 00 2 lda #No_Err
00157 0157 18 2 clc
00158 0158 60 6 rts
00159 0159
00159 0159 A9 28 2 @error lda #No_dev ;Device not found.
0015B 015B 38 2 sec
0015C 015C 60 6 rts
0015D 015D
0015D 015D ;*******************************************************
0015D 015D
0015D 015D 104150504C45 scan_str dc.b 'APPLE SCANNER ' ;4 Spaces between
0016E 016E ;1 Sace after
0016E 016E 00 dev_count dc.b $00
0016F 016F
0016F 016F ;*******************************************************
0016F 016F
0016F 016F 00 scan_dnum dc.b $00 ;Scanner Device Number
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 7
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
00170 0170
00170 0170 ;*******************************************************
00170 0170
00170 0170 03 stat_list2 dc.b $03 ;PCount = 3
00171 0171 00 dev_num2 dc.b $00 ;Device number
00172 0172 0175 dc.w stat_data2 ;Data returned here
00174 0174 00 stat_code2 dc.b $00 ;Status Code
00175 0175
00175 0175 ;*******************************************************
00175 0175
00175 0175 stat_data2 ;Our Buffer. Used over.
00175 0175 00 d_stat dc.b $00 ;Device Status Byte
00176 0176 00 blk_low dc.b $00 ;Block Count (Low)
00177 0177 00 blk_mid dc.b $00 ;Block Count (Mid)
00178 0178 00 blk_hi dc.b $00 ;Block Count (High)
00179 0179 00 id_str_len dc.b $00 ;ID String Length
0017A 017A 000000000000 id_str dcb.b 16,$00 ;ID STring (16 Bytes)
0018A 018A 00 d_type dc.b $00 ;Device Type
0018B 018B 00 d_stype dc.b $00 ;Device Subtype
0018C 018C 0000 d_version dc.w $00 ;Version Word
0018E 018E
0018E 018E ;*******************************************************
0018E 018E ;
0018E 018E ; CODE SAMPLE #3
0018E 018E ;
0018E 018E ; This code segment issues an Apple Scanner SEND
0018E 018E ; Command by using the Apple SCSI Card Generic SCSI
0018E 018E ; call ($2B). By so doing we can send our halftone
0018E 018E ; filter to the Scanner.
0018E 018E ;
0018E 018E ;*******************************************************
0018E 018E
0018E 018E htone_filter
0018E 018E ;
0018E 018E ; Issue the Call
0018E 018E ;
0018E 018E AD 016F 0016F 4 lda scan_dnum
00191 0191 8D FFFF 0019C 4 sta dev_num3
00194 0194
00194 0194 20 00B0 000B0 6 jsr call_card
00197 0197 04 dc.b $04 ;Control Call Command Number
00198 0198 019B dc.w cmd_list3
0019A 019A 60 6 rts
0019B 019B
0019B 019B ;*******************************************************
0019B 019B
0019B 019B 03 cmd_list3 dc.b $03 ;PCount = 3
0019C 019C 04 dev_num3 dc.b $04 ;Device number
0019D 019D 01A0 dc.w filter_data ;Pointer to data
0019F 019F 2B dc.b $2B ;Control Code
001A0 01A0
001A0 01A0 ;*******************************************************
001A0 01A0
001A0 01A0 filter_data ;Our Data
001A0 01A0 0018 dc.w 24 ;Total Length of Parms
001A2 01A2 000001BA dc.l send_fltr ;CDB Pointer (Long)
001A6 01A6 000001C4 dc.l DCData3 ;DCMove Ptr (Long)
001AA 01AA 00000000 dc.l $00000000 ;Rqst Sense Ptr (Long)
001AE 01AE 00 dc.b $00 ;Reserved
001AF 01AF 00 dc.b $00 ;SCSI Status
001B0 01B0 00 dc.b $00 ;Command Count
001B1 01B1 00000011 dc.l $00000011 ;Trans Count (Long)
001B5 01B5 00 dc.b $00 ;DMA Mode
001B6 01B6 00000000 dc.l $00000000 ;Reserved (Long)
001BA 01BA
001BA 01BA ;*******************************************************
001BA 01BA
001BA 01BA 2A send_fltr dc.b $2A ;Scanner SEND Command
001BB 01BB 00 dc.b $00 ;Reserved
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 8
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
001BC 01BC 02 dc.b $02 ;Transfer Type
001BD 01BD 00 dc.b $00 ;Reserved
001BE 01BE 00 dc.b $00 ;Reserved
001BF 01BF 02 dc.b $02 ;Transfer ID Byte
001C0 01C0 00 dc.b $00 ;Reserved
001C1 01C1 00 dc.b $00 ;Transfer Length (High)
001C2 01C2 11 dc.b $11 ;Transfer Length (Low)
001C3 01C3 00 dc.b $00 ;Reserved
001C4 01C4
001C4 01C4 ;*******************************************************
001C4 01C4
001C4 01C4 000001E4 DCData3 dc.l send_data ;Scanner SEND Data Ptr
001C8 01C8 00000011 dc.l $00000011 ;Transfer Count
001CC 01CC 00000000 dc.l $00000000 ;Offset
001D0 01D0 00000000 dc.l $00000000 ;Reserved
001D4 01D4
001D4 01D4 00000000 dc.l $00000000 ;DCStop
001D8 01D8 00000000 dc.l $00000000 ;Reserved
001DC 01DC 00000000 dc.l $00000000 ;Reserved
001E0 01E0 00000000 dc.l $00000000 ;Reserved
001E4 01E4
001E4 01E4 ;*******************************************************
001E4 01E4
001E4 01E4 44 send_data dc.b $44 ;4 X 4 Matrix Size
001E5 01E5 08 dc.b $08 ;Pel 0
001E6 01E6 88 dc.b $88 ;Pel 1
001E7 01E7 28 dc.b $28 ;Pel 2
001E8 01E8 A8 dc.b $A8 ;Pel 3
001E9 01E9 C8 dc.b $C8 ;Pel 4
001EA 01EA 48 dc.b $48 ;Pel 5
001EB 01EB E8 dc.b $E8 ;Pel 6
001EC 01EC 68 dc.b $68 ;Pel 7
001ED 01ED 38 dc.b $38 ;Pel 8
001EE 01EE B8 dc.b $B8 ;Pel 9
001EF 01EF 18 dc.b $18 ;Pel 10
001F0 01F0 98 dc.b $98 ;Pel 11
001F1 01F1 F8 dc.b $F8 ;Pel 12
001F2 01F2 78 dc.b $78 ;Pel 13
001F3 01F3 D8 dc.b $D8 ;Pel 14
001F4 01F4 58 dc.b $58 ;Pel 15
001F5 01F5
001F5 01F5 ;*******************************************************
001F5 01F5 ;
001F5 01F5 ; CODE SAMPLE #4
001F5 01F5 ;
001F5 01F5 ; This code segment issues an Apple Scanner Define
001F5 01F5 ; Window Parameters Command by using the Apple SCSI
001F5 01F5 ; Card Generic SCSI call ($2B). This command defines
001F5 01F5 ; the area of the scanner glass we want to scan
001F5 01F5 ;
001F5 01F5 ;*******************************************************
001F5 01F5
001F5 01F5 def_window
001F5 01F5 ;
001F5 01F5 ; Issue the Call
001F5 01F5 ;
001F5 01F5 AD 016F 0016F 4 lda scan_dnum
001F8 01F8 8D FFFF 00203 4 sta dev_num4
001FB 01FB
001FB 01FB 20 00B0 000B0 6 jsr call_card
001FE 01FE 04 dc.b $04 ;Control Call Command Number
001FF 01FF 0202 dc.w cmd_list4
00201 0201 60 6 rts
00202 0202
00202 0202 ;*******************************************************
00202 0202
00202 0202 03 cmd_list4 dc.b $03 ;PCount = 3
00203 0203 00 dev_num4 dc.b $00 ;Device number
00204 0204 0207 dc.w def_wndo ;Pointer to data
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 9
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
00206 0206 2B dc.b $2B ;Control Code
00207 0207
00207 0207 ;*******************************************************
00207 0207
00207 0207 def_wndo ;Our Data
00207 0207 0018 dc.w 24 ;Total Length of Parms
00209 0209 00000221 dc.l def_wnd_cmd ;CDB Pointer (Long)
0020D 020D 0000022B dc.l DCData4 ;DCMove Ptr (Long)
00211 0211 00000000 dc.l $00000000 ;Rqst Sense Ptr (Long)
00215 0215 00 dc.b $00 ;Reserved
00216 0216 00 dc.b $00 ;SCSI Status
00217 0217 00 dc.b $00 ;Command Count
00218 0218 00000030 dc.l 8+40 ;Trans Count (Long)
0021C 021C 00 dc.b $00 ;DMA Mode
0021D 021D 00000000 dc.l $00000000 ;Reserved (Long)
00221 0221
00221 0221 ;*******************************************************
00221 0221
00221 0221 24 def_wnd_cmd dc.b $24 ;Scanner Define Window
00222 0222 ;Parameters Command
00222 0222 00 dc.b $00 ;Reserved
00223 0223 00 dc.b $00 ;Reserved
00224 0224 00 dc.b $00 ;Reserved
00225 0225 00 dc.b $00 ;Reserved
00226 0226 00 dc.b $00 ;Reserved
00227 0227 00 dc.b $00 ;Transfer Length (High)
00228 0228 00 dc.b $00 ;Transfer Length (Mid)
00229 0229 30 dc.b 8+40 ;Transfer Length (Low)
0022A 022A 80 dc.b $80 ;Apple Bit
0022B 022B
0022B 022B ;*******************************************************
0022B 022B
0022B 022B 0000024B DCData4 dc.l wndo_data ;Scanner Window Data Ptr
0022F 022F 00000030 dc.l 8+40 ;Transfer Count
00233 0233 00000000 dc.l $00000000 ;Offset
00237 0237 00000000 dc.l $00000000 ;Reserved
0023B 023B
0023B 023B 00000000 dc.l $00000000 ;DCStop
0023F 023F 00000000 dc.l $00000000 ;Reserved
00243 0243 00000000 dc.l $00000000 ;Reserved
00247 0247 00000000 dc.l $00000000 ;Reserved
0024B 024B
0024B 024B ;*******************************************************
0024B 024B ; NOTE: Remember that all values that are longer than
0024B 024B ; 1 byte are in reversed order from natice 65xxx code.
0024B 024B ;*******************************************************
0024B 024B
0024B 024B 000000000000 wndo_data dcb.b 6,$00 ;Reserved
00251 0251 00 dc.b $00 ;Transfer Length (High)
00252 0252 28 dc.b 40 ;Transfer Length (Low)
00253 0253
00253 0253 01 dc.b $01 ;Window Identifier
00254 0254 00 dc.b $00 ;Reserved
00255 0255
00255 0255 00 dc.b $00 ;X Resolution (High)
00256 0256 96 dc.b 150 ;X Resolution (Low)
00257 0257
00257 0257 00 dc.b $00 ;Y Resolution (High)
00258 0258 4B dc.b 75 ;Y Resolution (Low)
00259 0259 ;
00259 0259 ; We will use the corner as
00259 0259 ; Our Upper Left Possition.
00259 0259 ; This is at coordinate 0,0
00259 0259 ;
00259 0259 00 dc.b $00 ;Upper Left X (High)
0025A 025A 00 dc.b $00 ;Upper Left X (Mid High)
0025B 025B 00 dc.b $00 ;Upper Left X (Mid Low)
0025C 025C 00 dc.b $00 ;Upper Left X (Low)
0025D 025D
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 10
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0025D 025D 00 dc.b $00 ;Upper Left Y (High)
0025E 025E 00 dc.b $00 ;Upper Left Y (Mid High)
0025F 025F 00 dc.b $00 ;Upper Left Y (Mid Low)
00260 0260 00 dc.b $00 ;Upper Left Y (Low)
00261 0261 ;
00261 0261 ; Width is defined as the number
00261 0261 ; of 1/1200-inch increments on
00261 0261 ; the horizontal axis; must be on
00261 0261 ; a byte boundry for both the
00261 0261 ; start and end points. We will
00261 0261 ; set for 4 Inches and drop the
00261 0261 ; extra.
00261 0261 ;
00261 0261 00 dc.b $00 ;Width (High)
00262 0262 00 dc.b $00 ;Width (Mid High)
00263 0263 12 dc.b 4*1200/256 ;Width (Mid Low)
00264 0264 C0 dc.b 4*1200 ;Width (Low)
00265 0265 ;
00265 0265 ; Length is defined as the number
00265 0265 ; of 1/1200-inch increments on the
00265 0265 ; vertical axis. We want ≈ 2 1/2
00265 0265 ; inches or 3072 increments
00265 0265 ;
00265 0265 00 dc.b $00 ;Length (High)
00266 0266 00 dc.b $00 ;Length (Mid High)
00267 0267 0C dc.b 3072/256 ;Length (Mid Low)
00268 0268 00 dc.b 3072 ;Length (Low)
00269 0269
00269 0269 80 dc.b $80 ;Median Brightness
0026A 026A 80 dc.b $80 ;Median Threshold
0026B 026B 80 dc.b $80 ;Median Contrast
0026C 026C
0026C 026C 01 dc.b $01 ;Image Composition (Halftone)
0026D 026D 01 dc.b $01 ;Bits per Pixel
0026E 026E
0026E 026E 00 dc.b $00 ;Halftone Mask Always $00 (High)
0026F 026F 02 dc.b $02 ;Downloaded Mask Pattern (Low)
00270 0270
00270 0270 03 dc.b $03 ;Padding Type
00271 0271 0000 dcb.b 2,$00 ;Reserved
00273 0273 00 dc.b $00 ;Compression Type (None)
00274 0274 000000000000 dcb.b 7,$00 ;Scanner Ref. is wrong. Says 5.
0027B 027B
0027B 027B ;*******************************************************
0027B 027B ;
0027B 027B ; CODE SAMPLE #5
0027B 027B ;
0027B 027B ; This code segment issues an Apple Scanner SCAN
0027B 027B ; Command by using the Apple SCSI Card Generic SCSI
0027B 027B ; call ($2B). This starts the actual scanning.
0027B 027B ;
0027B 027B ;*******************************************************
0027B 027B
0027B 027B start_scan
0027B 027B ;
0027B 027B ; Issue the Call
0027B 027B ;
0027B 027B AD 016F 0016F 4 lda scan_dnum
0027E 027E 8D FFFF 00289 4 sta dev_num5
00281 0281
00281 0281 20 00B0 000B0 6 jsr call_card
00284 0284 04 dc.b $04 ;Control Call Command Number
00285 0285 0288 dc.w cmd_list5
00287 0287 60 6 rts
00288 0288
00288 0288 ;*******************************************************
00288 0288
00288 0288 03 cmd_list5 dc.b $03 ;PCount = 3
00289 0289 00 dev_num5 dc.b $00 ;Device number
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 11
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0028A 028A 028D dc.w scan_cmd ;Pointer to data
0028C 028C 2B dc.b $2B ;Control Code
0028D 028D
0028D 028D ;*******************************************************
0028D 028D
0028D 028D scan_cmd ;Our Data
0028D 028D 0018 dc.w 24 ;Total Length of Parms
0028F 028F 000002A7 dc.l do_scan ;CDB Pointer (Long)
00293 0293 000002AD dc.l DCData5 ;DCMove Ptr (Long)
00297 0297 00000000 dc.l $00000000 ;Rqst Sense Ptr (Long)
0029B 029B 00 dc.b $00 ;Reserved
0029C 029C 00 dc.b $00 ;SCSI Status
0029D 029D 00 dc.b $00 ;Command Count
0029E 029E 00000001 dc.l $00000001 ;Trans Count (Long)
002A2 02A2 00 dc.b $00 ;DMA Mode
002A3 02A3 00000000 dc.l $00000000 ;Reserved (Long)
002A7 02A7
002A7 02A7 ;*******************************************************
002A7 02A7
002A7 02A7 1B do_scan dc.b $1B ;SCAN
002A8 02A8 ;Parameters Command
002A8 02A8 000000 dcb.b 3,$00 ;Reserved
002AB 02AB 01 dc.b 1 ;Transfer Length (Low)
002AC 02AC 00 dc.b $00 ;Wait and Home Bits = 0
002AD 02AD
002AD 02AD ;*******************************************************
002AD 02AD
002AD 02AD 000002CD DCData5 dc.l window_ID ;Scanner Window Data Ptr
002B1 02B1 00000001 dc.l 1 ;Transfer Count
002B5 02B5 00000000 dc.l $00000000 ;Offset
002B9 02B9 00000000 dc.l $00000000 ;Reserved
002BD 02BD
002BD 02BD 00000000 dc.l $00000000 ;DCStop
002C1 02C1 00000000 dc.l $00000000 ;Reserved
002C5 02C5 00000000 dc.l $00000000 ;Reserved
002C9 02C9 00000000 dc.l $00000000 ;Reserved
002CD 02CD
002CD 02CD ;*******************************************************
002CD 02CD
002CD 02CD 01 window_ID dc.b $01 ;Window Identifier
002CE 02CE
002CE 02CE ;*******************************************************
002CE 02CE ;
002CE 02CE ; CODE SAMPLE #6
002CE 02CE ;
002CE 02CE ; This code segment issues a series of calls to the
002CE 02CE ; Apple Scanner by using the Apple SCSI Card Generic
002CE 02CE ; SCSI call ($2B). We first issue a GET DATA STATUS
002CE 02CE ; to see if there is enough data. Then we read in a
002CE 02CE ; single Scan Line with a READ Call. The data is then
002CE 02CE ; converted and placed in a video buffer.
002CE 02CE ;
002CE 02CE ;*******************************************************
002CE 02CE
002CE 02CE get_data
002CE 02CE 9C FFFF 00338 4 stz scan_line ;Init the scanline to 0
002D1 02D1 ;
002D1 02D1 ; Issue the Call
002D1 02D1 ;
002D1 02D1 AD 016F 0016F 4 lda scan_dnum
002D4 02D4 8D FFFF 0038D 4 sta dev_num6
002D7 02D7 8D FFFF 00392 4 sta dev_num65
002DA 02DA
002DA 02DA 20 00B0 000B0 6 @get_data2 jsr call_card
002DD 02DD 04 dc.b $04 ;Control Call Command Number
002DE 02DE 038C dc.w cmd_list6
002E0 02E0 B0 52 00334 2 bcs @out
002E2 02E2 ;
002E2 02E2 ; Is there enough Data?
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 12
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
002E2 02E2 ; Enough data = 1 scan
002E2 02E2 ; line of 4 inches at 150
002E2 02E2 ; DPI or 600 pixels. At
002E2 02E2 ; 8 pixels per byte, the
002E2 02E2 ; data will be padded to
002E2 02E2 ; 75 bytes.
002E2 02E2 ;
002E2 02E2 AD FFFF 00427 4 lda scan_data
002E5 02E5 D0 0C 002F3 2 bne @have_line
002E7 02E7 AD FFFF 00428 4 lda scan_data+1
002EA 02EA D0 07 002F3 2 bne @have_line
002EC 02EC AD FFFF 00429 4 lda scan_data+2
002EF 02EF C9 4B 2 cmp #rqst_cnt
002F1 02F1 90 E7 002DA 2 blt @get_data2
002F3 02F3 ;
002F3 02F3 ; We have the data. Read
002F3 02F3 ; it.
002F3 02F3 ;
002F3 02F3 20 00B0 000B0 6 @have_line jsr call_card
002F6 02F6 04 dc.b $04 ;Control Call Command Number
002F7 02F7 0391 dc.w cmd_list65
002F9 02F9 B0 39 00334 2 bcs @out
002FB 02FB ;
002FB 02FB ; Now we need to invert
002FB 02FB ; the data.
002FB 02FB ;
002FB 02FB A9 50 2 lda #80 ;40 bytes/line
002FD 02FD 8D FFFF 00339 4 sta byte_count
00300 0300 9C FFFF 0033A 4 stz byte_index
00303 0303 A9 07 2 @loop_1 lda #$07
00305 0305 8D FFFF 0033B 4 sta seven ;Pixels/byte
00308 0308 A2 49 2 @loop_2 ldx #rqst_cnt-2
0030A 030A 0E FFFF 00474 6 asl raw_image+\
rqst_cnt-1 ;Shift bits out the top to
0030D 030D 3E FFFF 7 @loop_3 rol raw_image,x ;the next byte 1 at a time
00310 0310 CA 2 dex
00311 0311 10 FA 0030D 2 bpl @loop_3
00313 0313 AE FFFF 0033A 4 ldx byte_index ;Shift the last bit in to
00316 0316 7E FFFF 7 ror screen,x ;this byte. This reverses the
00319 0319 CE FFFF 0033B 6 dec seven ;bit ordering. Also taking 8
0031C 031C D0 EA 00308 2 bne @loop_2 ;bits per byte down to 7
0031E 031E 5E FFFF 7 lsr screen,x
00321 0321 EE FFFF 0033A 6 inc byte_index
00324 0324 CE FFFF 00339 6 dec byte_count
00327 0327 D0 DA 00303 2 bne @loop_1
00329 0329 ;
00329 0329 ; Move data to Scan Line
00329 0329 ;
00329 0329 AE FFFF 00338 4 ldx scan_line
0032C 032C 20 FFFF 0048E 6 jsr on_screen
0032F 032F EE FFFF 00338 6 inc scan_line
00332 0332 80 A6 002DA 3 bra @get_data2
00334 0334
00334 0334 A9 00 2 @out lda #$00
00336 0336 18 2 clc
00337 0337 60 6 rts
00338 0338
00338 0338 ;*******************************************************
00338 0338
00338 0338 00 scan_line dc.b $00 ;Scan Line Index
00339 0339 00 byte_count dc.b $00 ;Number of bytes left
0033A 033A 00 byte_index dc.b $00 ;Current Byte in use
0033B 033B 00 seven dc.b $00 ;Count off 7 pixels
0033C 033C 000000000000 screen dcb.b 80,0 ;Place to do the screen
0038C 038C
0038C 038C ;*******************************************************
0038C 038C
0038C 038C 03 cmd_list6 dc.b $03 ;PCount = 3
0038D 038D 00 dev_num6 dc.b $00 ;Device number
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 13
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0038E 038E 0396 dc.w gd_status ;Pointer to data
00390 0390 2B dc.b $2B ;Control Code
00391 0391
00391 0391 03 cmd_list65 dc.b $03 ;PCount = 3
00392 0392 00 dev_num65 dc.b $00 ;Device number
00393 0393 03B0 dc.w read ;Pointer to data
00395 0395 2B dc.b $2B ;Control Code
00396 0396
00396 0396 ;*******************************************************
00396 0396
00396 0396 gd_status ;Our Data
00396 0396 0018 dc.w 24 ;Total Length of Parms
00398 0398 000003CA dc.l get_stat ;CDB Pointer (Long)
0039C 039C 000003DE dc.l DCData6 ;DCMove Ptr (Long)
003A0 03A0 00000000 dc.l $00000000 ;Rqst Sense Ptr (Long)
003A4 03A4 00 dc.b $00 ;Reserved
003A5 03A5 00 dc.b $00 ;SCSI Status
003A6 03A6 00 dc.b $00 ;Command Count
003A7 03A7 0000000C dc.l $0000000C ;Trans Count (Long)
003AB 03AB 00 dc.b $00 ;DMA Mode
003AC 03AC 00000000 dc.l $00000000 ;Reserved (Long)
003B0 03B0
003B0 03B0 read ;Our Data
003B0 03B0 0018 dc.w 24 ;Total Length of Parms
003B2 03B2 000003D4 dc.l get_data2 ;CDB Pointer (Long)
003B6 03B6 000003FE dc.l DCData65 ;DCMove Ptr (Long)
003BA 03BA 00000000 dc.l $00000000 ;Rqst Sense Ptr (Long)
003BE 03BE 00 dc.b $00 ;Reserved
003BF 03BF 00 dc.b $00 ;SCSI Status
003C0 03C0 00 dc.b $00 ;Command Count
003C1 03C1 0000004B dc.l rqst_cnt ;Trans Count (Long)
003C5 03C5 00 dc.b $00 ;DMA Mode
003C6 03C6 00000000 dc.l $00000000 ;Reserved (Long)
003CA 03CA
003CA 03CA ;*******************************************************
003CA 03CA
003CA 03CA 34 get_stat dc.b $34 ;GET DATA STATUS
003CB 03CB ;Parameters Command
003CB 03CB 000000000000 dcb.b 7,$00 ;Reserved
003D2 03D2 0C dc.b 12 ;Transfer Length (Low)
003D3 03D3 00 dc.b $00 ;Wait and Home Bits = 0
003D4 03D4
003D4 03D4 28 get_data2 dc.b $28 ;READ
003D5 03D5 ;Parameters Command
003D5 03D5 00000000 dcb.b 4,$00 ;Reserved
003D9 03D9 01 dc.b $01 ;Window ID
003DA 03DA 00 dc.b $00 ;Transfer Length (High)
003DB 03DB 00 dc.b $00 ;Transfer Length (Mid)
003DC 03DC 4B dc.b rqst_cnt ;Transfer Length (Low)
003DD 03DD 00 dc.b $00 ;Wait and Home Bits = 0
003DE 03DE
003DE 03DE ;*******************************************************
003DE 03DE
003DE 03DE 0000041E DCData6 dc.l data_cnt ;Data Pointer
003E2 03E2 0000000C dc.l 12 ;Transfer Count
003E6 03E6 00000000 dc.l $00000000 ;Offset
003EA 03EA 00000000 dc.l $00000000 ;Reserved
003EE 03EE
003EE 03EE 00000000 dc.l $00000000 ;DCStop
003F2 03F2 00000000 dc.l $00000000 ;Reserved
003F6 03F6 00000000 dc.l $00000000 ;Reserved
003FA 03FA 00000000 dc.l $00000000 ;Reserved
003FE 03FE
003FE 03FE 0000042A DCData65 dc.l raw_image ;Data Pointer
00402 0402 0000004B dc.l rqst_cnt ;Transfer Count
00406 0406 00000000 dc.l $00000000 ;Offset
0040A 040A 00000000 dc.l $00000000 ;Reserved
0040E 040E
0040E 040E 00000000 dc.l $00000000 ;DCStop
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 14
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
00412 0412 00000000 dc.l $00000000 ;Reserved
00416 0416 00000000 dc.l $00000000 ;Reserved
0041A 041A 00000000 dc.l $00000000 ;Reserved
0041E 041E
0041E 041E ;*******************************************************
0041E 041E
0041E 041E data_cnt ;Data Space
0041E 041E 0000 dcb.b 2,$00 ;Reserved
00420 0420 00 dc.b $00 ;Data Length
00421 0421 00 dc.b $00 ;Block
00422 0422 00 dc.b $00 ;Window Identifier
00423 0423 00000000 dcb.b 4,$00 ;Reserved
00427 0427 00 scan_data dc.b $00 ;Scan Data (High)
00428 0428 00 dc.b $00 ;Scan Data (Mid)
00429 0429 00 dc.b $00 ;Scan Data (Low)
0042A 042A
0042A 042A 000000000000 raw_image dcb.b 100,$00;Scanned Data Image
0048E 048E
0048E 048E ;*******************************************************
0048E 048E
0048E 048E BD FFFF 4 on_screen lda scan_tbl_lo,x
00491 0491 85 42 3 sta <My_ZPage
00493 0493 BD FFFF 4 lda scan_tbl_hi,x
00496 0496 85 43 3 sta <My_ZPage+1
00498 0498 ;
00498 0498 ; Do Main Bank Screen
00498 0498 ;
00498 0498 8D C001 4 sta SET80COL ;Allow writes to AUX 48k
0049B 049B
0049B 049B 8D C004 4 sta WRMAINRAM ;Write to Main 48k
0049E 049E
0049E 049E A2 4F 2 ldx #80-1
004A0 04A0 A0 27 2 ldy #40-1
004A2 04A2 BD 033C 4 @loop lda screen,x
004A5 04A5 49 7F 2 eor #$7f
004A7 04A7 91 42 6 sta (My_ZPage),y
004A9 04A9 CA 2 dex
004AA 04AA CA 2 dex
004AB 04AB 88 2 dey
004AC 04AC 10 F4 004A2 2 bpl @loop
004AE 04AE ;
004AE 04AE ; Do Aux Bank Screen
004AE 04AE ;
004AE 04AE 8D C005 4 sta WRCARDRAM ;Write to Alternate 48k
004B1 04B1
004B1 04B1 A2 4E 2 ldx #80-2
004B3 04B3 A0 27 2 ldy #40-1
004B5 04B5 BD 033C 4 @loop2 lda screen,x
004B8 04B8 49 7F 2 eor #$7f
004BA 04BA 91 42 6 sta (My_ZPage),y
004BC 04BC CA 2 dex
004BD 04BD CA 2 dex
004BE 04BE 88 2 dey
004BF 04BF 10 F4 004B5 2 bpl @loop2
004C1 04C1
004C1 04C1 8D C004 4 sta WRMAINRAM ;Write to Main 48k
004C4 04C4
004C4 04C4 8D C000 4 sta CLR80COL ;Disallow writes to AUX 48k
004C7 04C7
004C7 04C7 18 2 clc
004C8 04C8 60 6 rts
004C9 04C9
004C9 04C9 000000000000 scan_tbl_lo dcb.b 8,$00 ;Lines 0-7
004D1 04D1 808080808080 dcb.b 8,$80 ;Lines 8-15
004D9 04D9 000000000000 dcb.b 8,$00 ;Lines 16-23
004E1 04E1 808080808080 dcb.b 8,$80 ;Lines 24-31
004E9 04E9 000000000000 dcb.b 8,$00 ;Lines 32-39
004F1 04F1 808080808080 dcb.b 8,$80 ;Lines 40-47
004F9 04F9 000000000000 dcb.b 8,$00 ;Lines 48-55
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 15
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
00501 0501 808080808080 dcb.b 8,$80 ;Lines 56-63
00509 0509
00509 0509 282828282828 dcb.b 8,$28 ;Lines 64-71
00511 0511 A8A8A8A8A8A8 dcb.b 8,$a8 ;Lines 72-79
00519 0519 282828282828 dcb.b 8,$28 ;Lines 80-87
00521 0521 A8A8A8A8A8A8 dcb.b 8,$a8 ;Lines 88-95
00529 0529 282828282828 dcb.b 8,$28 ;Lines 96-103
00531 0531 A8A8A8A8A8A8 dcb.b 8,$a8 ;Lines 104-111
00539 0539 282828282828 dcb.b 8,$28 ;Lines 112-119
00541 0541 A8A8A8A8A8A8 dcb.b 8,$a8 ;Lines 120-127
00549 0549
00549 0549 505050505050 dcb.b 8,$50 ;Lines 128-135
00551 0551 D0D0D0D0D0D0 dcb.b 8,$d0 ;Lines 136-143
00559 0559 505050505050 dcb.b 8,$50 ;Lines 144-151
00561 0561 D0D0D0D0D0D0 dcb.b 8,$d0 ;Lines 152-159
00569 0569 505050505050 dcb.b 8,$50 ;Lines 160-167
00571 0571 D0D0D0D0D0D0 dcb.b 8,$d0 ;Lines 168-175
00579 0579 505050505050 dcb.b 8,$50 ;Lines 176-183
00581 0581 D0D0D0D0D0D0 dcb.b 8,$d0 ;Lines 184-191
00589 0589
00589 0589 2024282C3034 scan_tbl_hi dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
00591 0591 2024282C3034 dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
00599 0599 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
005A1 05A1 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
005A9 05A9 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
005B1 05B1 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
005B9 05B9 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
005C1 05C1 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
005C9 05C9
005C9 05C9 2024282C3034 dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
005D1 05D1 2024282C3034 dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
005D9 05D9 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
005E1 05E1 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
005E9 05E9 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
005F1 05F1 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
005F9 05F9 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
00601 0601 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
00609 0609
00609 0609 2024282C3034 dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
00611 0611 2024282C3034 dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
00619 0619 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
00621 0621 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
00629 0629 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
00631 0631 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
00639 0639 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
00641 0641 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
00649 0649
00649 0649 ;*******************************************************
00649 0649 ;
00649 0649 ; CODE SAMPLE #7
00649 0649 ;
00649 0649 ; This code segment toggles the HiRes Soft switches so
00649 0649 ; that we can see what was just scanned.
00649 0649 ;
00649 0649 ;*******************************************************
00649 0649
00649 0649 display
00649 0649 ;
00649 0649 ; Save the Current State
00649 0649 ;
00649 0649 AD C01A 4 lda RDTEXT
0064C 064C 8D FFFF 006B6 4 sta @text ;Text/Graphics
0064F 064F
0064F 064F AD C01B 4 lda RDMIX
00652 0652 8D FFFF 006B7 4 sta @mixed ;Mixed?
00655 0655
00655 0655 AD C01C 4 lda RDPAGE2
00658 0658 8D FFFF 006B8 4 sta @page ;Page 1 or 2
0065B 065B
MPW IIGS Assembler - Ver 1.1b1 04-Dec-90 Page 16
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0065B 065B AD C01D 4 lda RDHIRES
0065E 065E 8D FFFF 006B9 4 sta @hires ;HiRes Mode?
00661 0661
00661 0661 AD C01F 4 lda RD80VID
00664 0664 8D FFFF 006BA 4 sta @80col ;80-Column Mode?
00667 0667
00667 0667 8D C00D 4 sta SET80VID ;40-Column Mode.
0066A 066A 8D C050 4 sta TXTCLR ;Standard Apple II Graphics
0066D 066D 8D C052 4 sta MIXCLR ;Clear Mixed Mode
00670 0670 8D C054 4 sta TXTPAGE1 ;Page 1
00673 0673 8D C057 4 sta HIRES ;HiRes Mode
00676 0676 8D C05E 4 sta CLRAN3 ;Clear annunciator 3
00679 0679
00679 0679 8D C010 4 sta KBD_STRB ;Clear Key Strobe
0067C 067C AD C000 4 @key_loop lda KBD ;Get key
0067F 067F 10 FB 0067C 2 bpl @key_loop ;Wait for Key Press
00681 0681 8D C010 4 sta KBD_STRB ;Clear Key Strobe
00684 0684 C9 9B 2 cmp #ESC ;ESC Key
00686 0686 18 2 clc
00687 0687 D0 04 0068D 2 bne @chk_txt
00689 0689 38 2 sec ;Exit on ESC
0068A 068A
0068A 068A AD C05F 4 lda SETAN3 ;Set annunciator 3
0068D 068D
0068D 068D AD FFFF 006B6 4 @chk_txt lda @text
00690 0690 10 03 00695 2 bpl @chk_mix
00692 0692 8D C051 4 sta TXTSET ;Text on
00695 0695
00695 0695 AD FFFF 006B7 4 @chk_mix lda @mixed
00698 0698 10 03 0069D 2 bpl @chk_page
0069A 069A 8D C053 4 sta MIXSET ;Mixed on
0069D 069D
0069D 069D AD FFFF 006B8 4 @chk_page lda @page
006A0 06A0 10 03 006A5 2 bpl @chk_hires
006A2 06A2 8D C055 4 sta TXTPAGE2 ;Page 2
006A5 06A5
006A5 06A5 AD FFFF 006B9 4 @chk_hires lda @hires
006A8 06A8 30 03 006AD 2 bmi @chk_40col
006AA 06AA 8D C056 4 sta LORES ;HiRes Off
006AD 06AD
006AD 06AD AD FFFF 006BA 4 @chk_40col lda @80col
006B0 06B0 30 03 006B5 2 bmi @rts
006B2 06B2 8D C00C 4 sta CLR80VID ;80-Column on.
006B5 06B5
006B5 06B5 60 6 @rts rts
006B6 06B6
006B6 06B6 00 @text dc.b $00
006B7 06B7 00 @mixed dc.b $00
006B8 06B8 00 @page dc.b $00
006B9 06B9 00 @hires dc.b $00
006BA 06BA 00 @80col dc.b $00
006BB 06BB
006BB 06BB ;*******************************************************
006BB 06BB
006BB 06BB ENDP
END
Elapsed time: 3.68 seconds.
Assembly complete - no errors found. 1059 lines.